/*
 * ServerConfig.h
 * 
 * 服务器配置结构定义
 * 使用 nlohmann/json 进行配置加载
 * 
 * 阶段3：配置化 + BaseServer 框架
 */

#pragma once

#include <string>
#include <cstdint>

namespace framework {

enum class ServerType {
    ECHO = 1,
    CHAT = 2,
    LOBBY = 3,
    GAME = 4
};

/**
 * @brief 网络配置
 */
struct NetworkConfig {
    std::string ip = "0.0.0.0";
    uint16_t port = 8080;
    int threadNum = 0;              // 0 表示单 Reactor，>0 表示多 Reactor
    int maxConnections = 10000;
    int heartbeatInterval = 30;     // 心跳间隔（秒）
};

/**
 * @brief 服务器配置
 */
struct ServerConfig {
    uint32_t serverId = 0;
    ServerType serverType = ServerType::ECHO;
    std::string serverName;
    NetworkConfig network;
    std::string logLevel = "INFO";
    
    /**
     * @brief 从 JSON 文件加载配置
     * @param filename 配置文件路径
     * @return 成功返回 true，失败返回 false
     */
    bool loadFromFile(const std::string& filename);
    
    /**
     * @brief 保存配置到 JSON 文件
     * @param filename 配置文件路径
     * @return 成功返回 true，失败返回 false
     */
    bool saveToFile(const std::string& filename) const;
};

} // namespace framework

